bolero-generator
value generator for testing and fuzzing
Installation
bolero-generator
is on crates.io
and can be added to a project like so:
[]
= "0.9"
Usage
Simple type generator
use ;
let input = &;
let driver = new;
let value = .generate.unwrap;
Parameterized value generator
use ;
let input = &;
let driver = new;
let value = .with.bounds.generate.unwrap;
Nested parameterized value generator
use ;
let input = &;
let driver = new;
let value = .generate.unwrap;
Value modifications with map
and and_then
use ;
let input = &;
let driver = new;
let value =
.map
.and_then
.generate
.unwrap
Prior work
arbitrary
While bolero
draws a lot of inspiration from the rust_arbitrary
crate, several improvements were added:
Parameterized generation
Arbitrary supports basic value generation, given a type:
let driver = new.unwrap;
let value: u8 = arbitrary.unwrap;
This can be limiting when constraints need to be applied to the type:
let driver = new.unwrap;
let value: u8 = arbitrary.unwrap;
// make sure `value` in between 8 and 20
let value = + 8;
The same issue arises from container sizes being limited to 0-255:
let driver = new.unwrap;
let mut value: = arbitrary.unwrap;
// make sure `value` has at least 3 items
while value.len < 3
// make sure `value` has no more than 42 items
while value.len > 42
bolero
supports value generation, given a type:
let driver = new;
let value = .generate.unwrap;
Parameterized generators can be created by calling with()
let driver = new;
let value = .with.bounds.generate.unwrap;
Container sizes can be specified as well:
let driver = new;
let value = .with.len.generate.unwrap;
#![no_std]
compatibility
bolero
supports environments that require #![no_std]
.